#coding:utf-8

####################################################################
##  一，脚本语法说明：
##  [类型字段, 命令字段, 匹配结果字段, 超时时间字段, 错误等级字段]
##  1，类型字段：
##        0：AT命令
##        1：延迟
##        2：数据
##		  3：命令嵌套
##	2，命令字段：
##		1）AT命令
##		[0, 'AT命令字符串', '匹配结果', 超时时间（单位s）, 错误等级字段]
##		2）延迟命令
##		[1, 延迟时间（单位ms）, '', '', '']
##		3）发送数据
##		[2, '数据内容', '匹配结果', 超时时间(单位s), 错误等级字段]
##		4）命令嵌套
##		[2, 命令列表名称, '', '', 错误等级字段]
##	3，匹配结果字段：
##		1）单行字符串('string')：按照字符串查找方式，匹配AT返回中的某一行，如果匹配成功就认为命令执行成功
##		2) 单行正则表达式(Reg('reg')): 按照正则表达式匹配方式，匹配AT返回中某一行，如果匹配成功就认为命令执行成功
##		3）多行字符串(FullMatch('string_line1\r\nstring_line2')): 按照字符串查找方式，匹配AT返回中的多行，如果匹配成功就认为命令执行成功
##		4）多行正则表达式(ReMatch('reg1[\s\S]+reg2')): 按照正则表达式匹配方式，匹配AT返回的多行，如果匹配成功就认为命令执行成功
##	4，超时时间字段：
##		如果执行【命令字段】后没有匹配到【匹配结果字段】，就会等待超时，超时时间单位为s
##	5，错误等级字段
##		0：忽略该条命令匹配错误继续执行下一行
##		1：如果该条命令匹配错误就停止执行
####################################################################


mqtt = [
	[0,'AT+MDISCONNECT', 'OK', 20, 0],
	[0,'AT+CSTT="'+apn1+'"', 'OK', 5, 1],
	[0,'AT+CIICR', 'OK', 20, 1],
	[0,'AT+CIFSR', Reg('(?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))'), 1, 1],
	[0,'AT+MCONFIG="clientid"', 'OK', 5, 1],
	[0,'AT+MQTTMSGSET=0', 'OK', 5, 1],
	[0,'AT+MIPSTART="lbsmqtt.mafu.shop","1883"', 'CONNECT OK', 20, 1],
	[0,'AT+MQTTSTATU', FullMatch('+MQTTSTATU :2\r\n\r\nOK\r\n'), 5, 1],
	[0,'AT+MCONNECT=1,60', 'CONNACK OK', 20, 1],
	[0,'AT+MQTTSTATU', FullMatch('+MQTTSTATU :1\r\n\r\nOK\r\n'), 5, 1],
	[0,'AT+MSUB="mqtt/topic",0', 'SUBACK', 20, 1],
	[0,'AT+MSUB="mqtt/topic2",0', 'SUBACK', 20, 1],
	[0,'AT+MSUB="mqtt/topic3",0', 'SUBACK', 20, 1],
	[0,'AT+MPUB="mqtt/topic",1,0,"SSSSddddd"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic",9 byte,SSSSddddd\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic",1,0,"SSSSddddd"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic",9 byte,SSSSddddd\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic",1,0,"SSSSddddd"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic",9 byte,SSSSddddd\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic",1,0,"111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic",132 byte,111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic",1,0,"111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic",132 byte,111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic",1,0,"111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic",132 byte,111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic",1,0,"111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic",132 byte,111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333\r\n'), 20, 1],
	
	[0,'AT+MPUB="mqtt/topic2",1,0,"111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic2",132 byte,111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic2",1,0,"111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic2",132 byte,111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic2",1,0,"55555555555555555555555555555555555555555"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic2",41 byte,55555555555555555555555555555555555555555\r\n'), 20, 1],
	
	[0,'AT+MPUB="mqtt/topic3",1,0,"111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic3",132 byte,111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic3",1,0,"111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic3",132 byte,111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic3",1,0,"234234213412342345*******/.,/.,/.,/.,/,./.,/.,,/,./,.32421342134"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic3",64 byte,234234213412342345*******/.,/.,/.,/.,/,./.,/.,,/,./,.32421342134\r\n'), 20, 1],

	[0,'AT+MPUB="mqtt/topic",1,0,"111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic",132 byte,111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic",1,0,"111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic",132 byte,111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic",1,0,"111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic",132 byte,111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic",1,0,"111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic",132 byte,111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic",1,0,"111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic",132 byte,111111111111111111111111111111122222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333\r\n'), 20, 1],
	[0,'AT+MQTTSTATU', FullMatch('+MQTTSTATU :1\r\n\r\nOK\r\n'), 5, 1],
	[0,'AT+MPUB="mqtt/topic",1,0,"SSSSddddd"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic",9 byte,SSSSddddd\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic",1,0,"SSSSddddd"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic",9 byte,SSSSddddd\r\n'), 20, 1],
	[0,'AT+MPUB="mqtt/topic",1,0,"SSSSddddd"', FullMatch('PUBACK\r\n\r\n+MSUB: "mqtt/topic",9 byte,SSSSddddd\r\n'), 20, 1],

	[0,'AT+MUNSUB="mqtt/topic"', 'UNSUBACK', 20, 1],
	[0,'AT+MUNSUB="mqtt/topic2"', 'UNSUBACK', 20, 1],
	[0,'AT+MUNSUB="mqtt/topic3"', 'UNSUBACK', 20, 1],	
	
#MQTTMSGSET=1 	
	[0,'AT+MQTTMSGSET=1', 'OK', 5, 1],
	
	[0,'AT+MSUB="mqtt/get/topic",0', 'SUBACK', 20, 1],
	[0,'AT+MSUB="mqtt/get/topic2",0', 'SUBACK', 20, 1],
	[0,'AT+MSUB="mqtt/get/topic3",0', 'SUBACK', 20, 1],
	[0,'AT+MPUB="mqtt/get/topic",1,0,"SSSSddddd"', FullMatch('PUBACK\r\n\r\n+MSUB: 0'), 20, 1],
	[0,'AT+MPUB="mqtt/get/topic2",1,0,"SSSSddddd"', FullMatch('PUBACK\r\n\r\n+MSUB: 1'), 20, 1],
	
	[0,'AT+MQTTMSGGET?', FullMatch('+MQTTMSGGET: 0,VALID\r\n+MQTTMSGGET: 1,VALID\r\n+MQTTMSGGET: 2,INVALID\r\n+MQTTMSGGET: 3,INVALID\r\n\r\nOK\r\n'), 20,1],
	
	[0,'AT+MPUB="mqtt/get/topic3",1,0,"111111111111111111111"', FullMatch('PUBACK\r\n\r\n+MSUB: 2'), 20, 1],
	[0,'AT+MPUB="mqtt/get/topic3",1,0,"111111111111111111111"', FullMatch('PUBACK\r\n\r\n+MSUB: 3'), 20, 1],
	
	
	[0,'AT+MQTTMSGGET', FullMatch('+MSUB:mqtt/get/topic,9 byte,SSSSddddd\r\n+MSUB:mqtt/get/topic2,9 byte,SSSSddddd\r\n+MSUB:mqtt/get/topic3,21 byte,111111111111111111111\r\n+MSUB:mqtt/get/topic3,21 byte,111111111111111111111\r\n\r\nOK\r\n'), 20,1],
	
	[0,'AT+MQTTMSGGET?', FullMatch('+MQTTMSGGET: 0,INVALID\r\n+MQTTMSGGET: 1,INVALID\r\n+MQTTMSGGET: 2,INVALID\r\n+MQTTMSGGET: 3,INVALID\r\n\r\nOK\r\n'), 1, 1],
	
	[0,'AT+MPUB="mqtt/get/topic2",1,0,"SSSSddddd"', FullMatch('PUBACK\r\n\r\n+MSUB: 0'), 20, 1],
	[0,'AT+MPUB="mqtt/get/topic2",1,0,"1123123123"', FullMatch('PUBACK\r\n\r\n+MSUB: 1'), 20, 1],
	
	[0,'AT+MQTTMSGGET', FullMatch('+MSUB:mqtt/get/topic2,9 byte,SSSSddddd\r\n+MSUB:mqtt/get/topic2,10 byte,1123123123\r\n\r\nOK\r\n'), 20,1],
	
	[0,'AT+MQTTMSGSET=0', 'OK', 5, 1],
	
	[0,'AT+MDISCONNECT', 'OK', 20, 1],

]